import 'dart:async';

import 'package:meta/meta.dart';
import 'dart:typed_data';

import '../../../sentry_flutter.dart';
import '../sentry_native_channel.dart';
import '../../file_system_transport.dart';

/// OHOS specific native binding.
/// Currently reuses the generic MethodChannel implementation but
/// allows platform specific capability flags.
@internal
class SentryNativeOhos extends SentryNativeChannel {
  SentryNativeOhos(super.options);

  @override
  bool get supportsReplay => true;

  // @override
  // Future<void> init(Hub hub) async {
  //   await super.init(hub);
  //   // 为了与 Android 示例启动行为一致（启动即能看到 loadContexts 与 captureEnvelope 调用），
  //   // 在调试场景下主动发送一条轻量事件，触发上下文加载与 envelope 发送。
  //   try {
  //     if (options.debug) {
  //       await hub.captureMessage('sentry_ohos_warmup');
  //     }
  //   } catch (_) {}
  //   // 强制确保使用 FileSystemTransport（OHOS 原生通道），以避免因平台识别差异未设置 transport 的情况。
  //   try {
  //     // ignore: invalid_use_of_internal_member
  //     options.transport = FileSystemTransport(this, options);
  //   } catch (_) {}
  // }
  //
  // // OHOS MethodChannel 对二进制参数的支持与标准 Flutter 不完全一致，
  // // 这里将 Uint8List 转为 List<int> 以提高跨端序列化兼容性。
  // @override
  // Future<void> captureEnvelope(
  //     Uint8List envelopeData, bool containsUnhandledException) {
  //   final asList = envelopeData.toList(growable: false);
  //   return channel.invokeMethod(
  //       'captureEnvelope', [asList, containsUnhandledException]);
  // }

  // @override
  // Future<void> captureEnvelope(
  //     Uint8List envelopeData, bool containsUnhandledException) {
  //   // OHOS 端 ETS 已同时兼容 Map 和 List 两种入参。为避免某些通道实现对二进制 Map 的序列化差异，
  //   // 这里改为使用位置参数（List）并将 Uint8List 转为 List<int>，提高兼容性。
  //   // ignore: avoid_print
  //   print('flutter captureEnvelope ss');
  //   return channel.invokeMethod(
  //     'captureEnvelope',
  //     <dynamic>[envelopeData.toList(), containsUnhandledException],
  //   );
  // }
}
